package com.karson.service.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.karson.common.model.ActionCounts;
import com.karson.common.model.AlbumInfo;
import com.karson.common.request.AlbumRequest;
import com.karson.common.request.AlbumSearchRequest;
import com.karson.common.response.AlbumRJCode;
import com.karson.common.response.AlbumResponse;
import com.baomidou.mybatisplus.extension.service.IService;
import com.karson.common.response.AlbumTrackResponse;

import java.util.List;
import java.util.Map;

/**
* @author ZKS
* @description 针对表【ar_album_info(专辑信息)】的数据库操作Service
* @createDate 2025-07-10 13:41:05
*/
public interface AlbumInfoService extends IService<AlbumInfo> {

    IPage<AlbumResponse> pageList(IPage<AlbumResponse> albumResponseIPage, AlbumSearchRequest albumSearchRequest);

    void saveAlbumInfo(AlbumRequest albumInfo);

    AlbumResponse getAlbumInfoById(Integer albumId);

    AlbumResponse getAllAlbumById(Integer albumId);

    void removeByAlbumId(Integer albumId);

    Boolean saveTag(Integer albumId, Integer tagId);

    void editAlbumInfo(AlbumRequest albumRequest);

    List<AlbumRJCode> getAlbumRjCode();

    List<Integer> getAlbumsByCircleIds(List<Integer> idList);

    void computedRate();

    void recommendAllHotRank();

    double computeHotScore(ActionCounts actionCounts, Map<String, Double> weightMap);

    List<AlbumResponse> getAlbumInfoByIds(List<Integer> ids);

    /**
     * 获取专辑以及歌曲所有信息
     * @param albumId 专辑ID
     * @return AlbumTrackResponse响应对象
     */
    AlbumTrackResponse getAlbumTrackById(Integer albumId);
}
